// hdu5816
// 题意：
// 现在你有m张A类卡，n张B类卡（m+n<=20），随机构成一个牌堆，初始你可以摸
// 一张卡，使用A类卡你可以选择再摸两张卡，使用B类卡会对敌人造成X(<=1000)点伤害，
// 每张B类卡伤害不一定相同，实现知道。每一回合一直到手牌耗尽结束，
// 现在问一回合给敌人造成超过p点伤害的概率是多少？
//
// 题解：
// 设f[i][j]表示摸到i张A类卡，j张B类卡，且过程中一直保证i>=j的方案数，
// 这样可以保证的确可以摸到这样i+j张牌，这个可以递推算出来
//  f[i][j] = f[i - 1][j] + f[i][j - 1]
//
// 然后枚举B类卡的集合，如果造成的伤害大于等于p，且使用了k张b类卡，
// 那么它对方案总数的贡献是 f[k-1][k]*C(n, k-1)*(k-1)!*k!
// 这相当于考虑一轮手牌耗尽，正好是k张b类卡，k-1张a类卡。
// 然后还需要考虑一种情况，是把所有n+m张牌都摸完的情况，这时候是所有
// b类卡都摸完的时候，方案数是f[n][m]*n!*m!。
//
// ml:run = $bin < input
#include <iostream>

using ll = long long;
int const maxn = 20;
int one_count[1 << (maxn + 1)];
int sum[1 << (maxn + 1)];
int a[1 << (maxn + 1)];
ll fact[maxn];
ll c[maxn + 4][maxn + 4];
ll f[maxn + 4][maxn + 4];
int n, m, p;

ll gcd(ll a, ll b) { return !b ? a : gcd(b, a % b); }
int lowbit(int x) { return x & -x; }

void init()
{
    for (int i = 1; i <= (1 << maxn); i++)
        one_count[i] = one_count[i ^ lowbit(i)] + 1;
    f[0][0] = f[0][1] = 1;
    for (int i = 1; i <= maxn; i++) {
        f[i][0] = 1;
        for (int j = 1; j < i; j++) f[i][j] = f[i - 1][j] + f[i][j - 1];
        f[i][i] = f[i][i + 1] = f[i][i - 1];
    }
    c[0][0] = 1;
    for (int i = 1; i <= maxn; i++) {
        c[i][0] = c[i][i] = 1;
        for (int j = 1; j < i; j++) c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
    }
    fact[0] = 1;
    for (int i = 1; i <= maxn; i++) fact[i] = fact[i - 1] * i;
}

int main()
{
    std::ios_base::sync_with_stdio(false);
    int T; std::cin >> T;
    init();
    while (T--) {
        std::cin >> p >> n >> m;
        for (int i = 0; i < m; i++) std::cin >> a[1 << i];
        for (int i = 1; i < (1 << m); i++)
            sum[i] = sum[i ^ lowbit(i)] + a[lowbit(i)];
        ll ans = 0;
        for (int i = 0; i < (1 << m); i++) {
            int k = one_count[i];
            if (sum[i] < p || k > n + 1) continue;
            ans += c[n][k - 1] * fact[k - 1] * fact[k] * f[k - 1][k] * fact[n + m - 2 * k + 1];
            if (k == m && k < n + 1) ans += f[n][m] * fact[m] * fact[n];
        }
        ll b = fact[n + m];
        ll d = gcd(ans, b);
        std::cout << ans / d << "/" << b / d << "\n";
    }
}

